package com.example.JavaWebApi.core.apiinterceptors.annotation;

import com.example.JavaWebApi.core.apiinterceptors.Enum.RoleEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @PROJECT_NAME: JavaWebApi
 * @DESCRIPTION: 标记此注解代表需要进行鉴权验证
 * 1.可以标记在类和方法上,在类上表示类下面所有的方法都需要鉴权
 * 2.同时作用时,此注解的优先级小于AllowAnonymous
 * 3.类上有此注解,方法上标记AllowAnonymous 不走鉴权
 * @Author: YangZe
 * @DATE: 2021/11/28 14:06
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Authorize {
    RoleEnum[] roles() default {RoleEnum.SuperAdmin, RoleEnum.Admin};
    boolean validApi() default false;
}
